This invention relates to integrated circuits, and more particularly, to programmable integrated circuits.
Programmable integrated circuits contain programmable logic that may be programmed to implement a desired custom logic design and are therefore sometimes referred to as programmable logic devices (PLDs). Programmable logic device integrated circuits may also contain redundant circuitry. Redundant circuitry can be used to repair a programmable logic device that contains a defect, thereby improving production yield.
A programmable logic device is typically organized into logic regions. Each of the logic regions on a programmable logic device includes multiple rows of logic and one spare row of logic. When one row in a logic region is determined to be defective (assuming the bad row is not the spare row), the spare row in that logic region is engaged so that each row from the spare row to the row immediately below the bad row replaces the row immediately preceding that that row (i.e., each row below the bad row is replaced by the row immediately below that row). Such types of row-based redundancy schemes are described, for example, in commonly assigned U.S. Pat. No. 6,965,249 and U.S. Pat. No. 7,180,324, incorporate by reference herein in their entireties.
Conventional row-based redundancy schemes often rely on the use of vertical wires to interconnect the different rows in each logic region. Each of the vertical wires typically spans multiple rows and has a distal terminal that is either connected to circuitry in a first target row or a second target row. If a given vertical wire does not traverse a broken row, that given vertical wire will be connected to the first target row. If the given vertical wire traverses a broken row, all routing connections below the broken row will be shifted down by one row so that the given vertical wire is connected to the second target row. Redundancy schemes implemented using vertical wires that span multiple rows and that are directly connected to routing circuitry in two target rows require undesirable amounts of wiring and area overhead.